import { TODO_ALL, TODO_CLEAR_DONE, TODO_DEL, TODO_MODIFY_ACT } from "../contains"
import { TODO_DONE } from "../contains";
import { TODO_ADD } from "../contains";

const initialState =[
    {
        id:1,
        act:"吃饭",
        done:false
        
    },
    {
        id:2,
        act:"睡觉",
        done:false
        
    },
    {
        id:3,
        act:"写代码",
        done:true
        
    },
]

export default function todo(state=initialState,action){
    
    switch(action.type){
        case TODO_DEL:
            return state.filter((item)=>item.id!==action.id);
        case TODO_DONE:
            return state.map(item=>{
                if(item.id===action.id){
                    return {
                        ...item,
                        done:!item.done
                    }
                }else{
                    return {
                        ...item
                    }
                }
            });
        case TODO_ADD:
            return [
                {
                    id:state.length+1,
                    act:action.act,
                    done:false
                },
                ...state
                
            ]
        case TODO_ALL:
            return state.map(item=>({
                ...item,
                done:action.done
            }))
        case TODO_MODIFY_ACT:
            return state.map(item=>{
                if(item.id===action.id){
                    return {
                        ...item,
                        act:action.act
                    }
                }else{
                    return {...item}
                }
            })
        case TODO_CLEAR_DONE:
            return state.filter((item)=>!item.done)
        default:
            return state
    }
}